package main

import (
	"fmt"
	"sort"
)

func main() {
	//给定提供的 less 函数，切片对切片 x 进行排序。 如果 x 不是切片，它会发生恐慌。
	//
	//排序不能保证稳定：相等的元素可能会从它们的原始顺序颠倒过来。 对于稳定排序，请使用 SliceStable。
	//
	//less 函数必须满足与接口类型的 Less 方法相同的要求。

	people := []struct {
		Name string
		Age  int
	}{
		{"Gopher", 7},
		{"Alice", 55},
		{"Vera", 24},
		{"Bob", 75},
	}

	sort.Slice(people, func(i, j int) bool {
		return people[i].Name < people[j].Name
	})

	fmt.Println("by name", people)

	sort.Slice(people, func(i, j int) bool {
		return people[i].Age < people[j].Age
	})

	fmt.Println("by age", people)
	//by name [{Alice 55} {Bob 75} {Gopher 7} {Vera 24}]
	//by age [{Gopher 7} {Vera 24} {Alice 55} {Bob 75}]
}
